
/****************************************Copyright (c)****************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**
**                                 http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File Name:           Mouse.Drive.h
** Last modified Date:
** Last Version:
** Description:         底层驱动程序头文件
**
**--------------------------------------------------------------------------------------------------------
** Created By:
** Created date:
** Version:
** Descriptions:
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
*********************************************************************************************************/

#ifndef __Mouse_Drive_h
#define __Mouse_Drive_h

#include "Type.h"

/*********************************************************************************************************
  常量宏定义--传感器
*********************************************************************************************************/
typedef enum _ir
{
  _IR_FrontLeft,  /*  左前方传感器                */
  _IR_FrontRight, /*  右前方传感器                */
  _IR_Left,       /*  左方传感器                  */
  _IR_Right,      /*  右方传感器                  */
  _IR_Front       /*  前方传感器                  */
} _IR;

typedef enum _distance
{
  _Near, // 距离近
  _Mid,  // 距离中
  _Far,  // 距离远
} _Distance;

#define __DISTANCE_LEFT_NEAR 461;        //左红外近
#define __DISTANCE_LEFT_MID 384;         //左红外中
#define __DISTANCE_LEFT_FAR 110;         //左红外远
#define __DISTANCE_RIGHT_NEAR 409;       //右红外近
#define __DISTANCE_RIGHT_MID 329;        //右红外中
#define __DISTANCE_RIGHT_FAR 100;        //右红外近
#define __DISTANCE_FRONT_LEFT_NEAR 200;  //近距，用来判断停止
#define __DISTANCE_FRONT_RIGHT_NEAR 200; //
#define __DISTANCE_FRONT_LEFT_FAR 110;   //远距用来判断墙壁
#define __DISTANCE_FRONT_RIGHT_FAR 200;  //

extern uint8 IsWayAhead;
extern uint8 AcceleratedSpeed;
extern uint16 DistanceSettings[4][3];

void InitDistanceSettings();

/*********************************************************************************************************
** Function name:       Delay
** Descriptions:        延时函数
** input parameters:    uiD :延时参数，值越大，延时越久
** output parameters:   无
** Returned value:      无
*********************************************************************************************************/
void Delay(uint32 uiD);

/*********************************************************************************************************
** Function name:       PIDInit
** Descriptions:        PID初始化
** input parameters:    无
** output parameters:   无
** Returned value:      无
*********************************************************************************************************/
void PIDInit();

uint8 GetDistanceStatus(_IR ir);

void MazeSearch(void);     /*  前进N格                     */
void MouseTurnLeft(void);  /*  向左转90度                  */
void MouseTurnRight(void); /*  向右转90度                  */

void MouseTurnLeft1(void);  /*  向左转90度                  */
void MouseTurnRight1(void); /*  向右转90度                  */

void MouseTurnBack(void);   /*  向后转                      */
void SensorDebug(void);     /*  传感器调试                  */
void MouseGoahead_Hui(int8 cNBlock); /*  前进N格                     */
void MouseGoahead1(int8 cNBlock);
void MouseGoahead2(int8 cNBlock);
void MouseGoahead_Hui_Low(int8 cNBlock);
void MouseGoahead1_Low(int8 cNBlock);
void MouseGoahead2_Low(int8 cNBlock);
void MouseTurnBack_Y(void);
void OneStep(void);

void MouseInit(void);
void MouseTurnLeft_Hui(void);       /*  向左转90度                  */
void MouseTurnRight_Hui(void);
void MouseStop();
void MouseTurnBack_QiDian(void);
uint8 StartCheck(void);
void AD_Init(void);
void Go2();
#endif
/*********************************************************************************************************
  END FILE
*********************************************************************************************************/
